.TH SG_REQUESTS "8" "May 2023" "sg3_utils\-1.48" SG3_UTILS
.SH NAME
sg_requests \- send one or more SCSI REQUEST SENSE commands
.SH SYNOPSIS
.B sg_requests
[\fI\-\-desc\fR] [\fI\-\-error\fR] [\fI\-\-help\fR] [\fI\-\-hex\fR]
[\fI\-\-maxlen=LEN\fR] [\fI\-\-num=NUM\fR] [\fI\-\-number=NUM\fR]
[\fI\-\-progress\fR] [\fI\-\-raw\fR] [\fI\-\-status\fR] [\fI\-\-time\fR]
[\fI\-\-timeout=SE\fR] [\fI\-\-verbose\fR] [\fI\-\-version\fR] \fIDEVICE\fR
.SH DESCRIPTION
.\" Add any additional description here
Send SCSI REQUEST SENSE command to \fIDEVICE\fR and output the parameter
data response which is expected to be in sense data format. Both fixed
and descriptor sense data formats are supported.
.PP
Multiple REQUEST SENSE commands can be sent with the \fI\-\-num=NUM\fR
option. This can be used for timing purposes or monitoring the progress
indication.
.SH OPTIONS
Arguments to long options are mandatory for short options as well.
.TP
\fB\-d\fR, \fB\-\-desc\fR
sets the DESC bit in the REQUEST SENSE SCSI cdb. The \fIDEVICE\fR
should return sense data in descriptor (rather than fixed) format. This
will only occur if the \fIDEVICE\fR recognizes descriptor format (SPC\-3
and later). If the device is pre SPC\-3 then setting a bit in a reserved
field may cause a check condition status with an illegal request sense key,
but will most likely be ignored.
.TP
\fB\-e\fR, \fB\-\-error\fR
when used once it changes the REQUEST SENSE opcode from 0x3 to 0xff which
should be rejected by the \fIDEVICE\fR. There is a small chance that the
device vendor has implemented a vendor specific command at that opcode (0xff).
When used twice the pass\-through call to send the SCSI command is bypassed.
The idea here is to measure the user space overhead of this package's
library to set up and process the response of a SCSI command. This option
will be typically used with the \fI\-\-num=NUM\fR and \fI\-\-time\fR
options where \fINUM\fR is a large number (e.g. 1000000).
.TP
\fB\-h\fR, \fB\-\-help\fR
output the usage message then exit.
.TP
\fB\-H\fR, \fB\-\-hex\fR
output response in ASCII hexadecimal.
.TP
\fB\-m\fR, \fB\-\-maxlen\fR=\fILEN\fR
where \fILEN\fR is the (maximum) response length in bytes. It is placed in the
cdb's "allocation length" field. If not given (or \fILEN\fR is zero) then
252 is used. The maximum value of \fILEN\fR is 255 (but SPC\-4 recommends 252).
.TP
\fB\-n\fR, \fB\-\-num\fR=\fINUM\fR
perform \fINUM\fR SCSI REQUEST SENSE commands, stopping when either \fINUM\fR
is reached or an error occurs. The default value for \fINUM\fR is 1 .
.TP
\fB\-\-number\fR=\fINUM\fR
same action as \fI\-\-num=NUM\fR. Added for compatibility with sg_turs.
.TP
\fB\-p\fR, \fB\-\-progress\fR
show progress indication (a percentage) if available. If \fI\-\-num=NUM\fR
is given, \fINUM\fR is greater than 1 and an initial progress indication
was detected then this utility waits 30 seconds before subsequent checks.
Exits when \fINUM\fR is reached or there are no more progress indications.
Ignores \fI\-\-hex\fR, \fI\-\-raw\fR and \fI\-\-time\fR options. See
NOTES section below.
.TP
\fB\-r\fR, \fB\-\-raw\fR
output response in binary (to stdout).
.TP
\fB\-s\fR, \fB\-\-status\fR
if the REQUEST SENSE command finished without error (as indicated by its
SCSI status) then the contents of the parameter data are analysed as
sense data and the exit status is set accordingly. The default
action (i.e. when this option is not given) is to ignore the contents
of the parameter data for the purposes of setting the exit status.
Some types of error set a sense key of "NO SENSE" with non\-zero
information in the additional sense code (e.g. the FAILURE PREDICTION
THRESHOLD EXCEEDED group of codes); this results in an exit status
value of 10. If the sense key is "NO SENSE" and both asc and ascq are
zero then the exit status is set to 0 . See the sg3_utils(8) man page
for exit status values.
.TP
\fB\-t\fR, \fB\-\-time\fR
time the SCSI REQUEST SENSE command(s) and calculate the average number
of operations per second.
.TP
\fB\-T\fR, \fB\-\-timeout\fR=\fISE\fR
where \fISE\fR is the command timeout of each TEST UNIT READY command. The
unit for \fISE\fR is seconds and if 0 is given, it is mapped to 60 seconds
which is the default. An alternate long option form is \fI\-\-tmo=SE\fR.
.TP
\fB\-v\fR, \fB\-\-verbose\fR
increase the level of verbosity, (i.e. debug output).
Additionally the response (if received) is output in ASCII\-HEX. Use
this option multiple times for greater verbosity.
.TP
\fB\-V\fR, \fB\-\-version\fR
print the version string and then exit.
.SH NOTES
In SCSI 1 and 2 the REQUEST SENSE command was very important for error
and warning processing in SCSI. The autosense capability rendered this
command almost superfluous.
.PP
However recent SCSI drafts (e.g. SPC\-4 rev 14 and SBC\-3 rev 14) increase
the utility of the REQUEST SENSE command. Idle and standby (low) power
conditions can be detected with this command.
.PP
The REQUEST SENSE command is not marked as mandatory in SPC\-3 (i.e. for
all SCSI devices) but is marked as mandatory in SBC\-2 (i.e. for disks),
SSC\-3 (i.e. for tapes) and MMC\-4 (i.e. for CD/DVD/HD\-DVD/BD drives).
.PP
The progress indication is optionally part of the sense data. When a prior
command that takes a long time to complete (and typically precludes other
media access commands) is still underway, the progress indication can be used
to determine how long before the device returns to its normal state.
.PP
The SCSI FORMAT command for disks used with the IMMED bit set is an example
of an operation that takes a significant amount of time and precludes other
media access during that time. The IMMED bit set instructs the FORMAT command
to return control to the application client once the format has commenced (see
SBC\-3). Several long duration SCSI commands associated with tape drives also
use the progress indication (see SSC\-3).
.PP
Early standards suggested that the SCSI TEST UNIT READY command be used for
polling the progress indication (see the sg_turs utility). Since SPC\-3 the
standards suggest that the SCSI REQUEST SENSE command should be used instead.
.PP
The \fIDEVICE\fR is opened with a read\-only flag (e.g. in Unix with the
O_RDONLY flag).
.SH EXIT STATUS
The exit status of sg_requests is 0 when it is successful. Otherwise see
the sg3_utils(8) man page.
.SH AUTHORS
Written by Douglas Gilbert.
.SH "REPORTING BUGS"
Report bugs to <dgilbert at interlog dot com>.
.SH COPYRIGHT
Copyright \(co 2004\-2023 Douglas Gilbert
.br
This software is distributed under a BSD\-2\-Clause license. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
.SH "SEE ALSO"
.B sg_turs (sg3_utils)
